package block;
/*
 *代码块： 使用{}括起来的代码简称为代码块
 *
 * 分类：
 *      1、局部代码块：
 *              位置：方法中的一堆大括号
 *              作用： 限定变量的生命周期，提早的释放内存
 *
 *      2、构造代码块：
 *          位置： 类中方法外的一对大括号
 *          特点： 在创建对象，执行构造方法的时候，就会执行构造代码块（优先于构造方法执行）
 *          作用：可以将多个构造方法中，重复的代码，抽取到构造代码块中，从而提升代码的复用性
 *
 *      3、静态代码块：
 *          位置”： 类中方法外的一对大括号，需要加入static关键字
 *          特点： 随着类的加载而执行，因为类只加载一次，所以也就只执行一次
 *          作用：对数据惊醒初始化
 *
 *      4、同步代码块：
 *
 *
 */


public class BlockTest {
    public static void main(String[] args) {

        //局部代码块
//        {
//            int num = 10;
//            System.out.println(num);
//        }
//
//        System.out.println("结束");

        Student stu = new Student();
        Student stu2 = new Student(222);

    }
}



class Student{

    static String school;
    static { //static修饰的成员会随着类的加载而执行
        school="黑马";

        System.out.println(school);
        System.out.println("static.....Student类的静态方法");
    }


    {
        System.out.println("好好学习");

    }
    public Student(){
        System.out.println("空参构造函数");
    }

    public Student(int num){
        System.out.println("带参的构造方法");
    }
}
